import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class Demo30 {
    public static void main(String[] args) {
        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(1000);
        //消费者
        Thread t1 = new Thread(() -> {
           try{
               while(true){
                   Integer value = queue.take();
                   System.out.println("消费： " + value);
                   //每隔 1s 消费一个
                   Thread.sleep(1000);
               }
           }catch(InterruptedException e){
               e.printStackTrace();
           }
        });

        //生产者2
        Thread t2 = new Thread(() -> {
           try{
               int count = 1;
               while(true){
                    queue.put(count);
                   System.out.println("t2 生产：" + count);
                   count++;
                   //Thread.sleep(1000);
               }
           }catch(InterruptedException e){
               e.printStackTrace();
           }
        });
        //生产者3
        Thread t3 = new Thread(() -> {
            int count = 1;
           try{
               while(true){
                   queue.put(count);
                   System.out.println("t3 生产：" + count);
                   count++;

               }
           }catch(InterruptedException e){
               e.printStackTrace();
           }
        });
        t1.start();
        t2.start();
        t3.start();
    }
}
